import store from 'store2'

class Storage {
  // 后缀
  suffix = '_detime'

  /**
   * 设置
   * @param key - 关键字
   * @param value - 值
   * @param expire - 过期时间，单位秒
   */
  set(key: string, value: any, expire?: number) {
    store.set(key, value)

    // 判断是否需要设置过期时间
    if (expire) {
      store.set(key + this.suffix, new Date().getTime() + expire * 1000)
    }
  }

  /**
   * 获取
   * @param key - 关键字
   */
  get(key: string) {
    // if (this.isExpired(key)) {
    //   return null
    // }

    return store.get(key)
  }

  /**
   * 移除
   * @param key - 关键字
   */
  remove(key: string) {
    store.remove(key)
    store.remove(key + this.suffix)
  }

  /**
   * 清理全部
   */
  clearAll() {
    store.clearAll()
  }

  /**
   * 是否过期
   * @param key - 关键字
   */
  isExpired(key: string) {
    const expire = store.get(key + this.suffix)
    // TODO if(!expire) return false 会有问题

    if (!expire) {
      return false
    }

    return expire - Date.parse(String(new Date())) <= 2000
  }
}

// 导出实例对象
export default new Storage()
